package com.hwCode;

import java.util.LinkedList;

/**
 * 你是一个良心老板，年底打算给员工发礼物。礼物只有1和0两种类型，摞在一起，员工只能拿最上面的一个礼物。
 * 每位员工也有自己的喜好（0或者1），按顺序拿礼物，如果礼物堆最上面的礼物不是当前员工喜欢的礼物，这位员工就会走到队伍末尾重新排队，拿了礼物的员工会离开队伍。
 * 为了尽可能让员工挑选礼物，没有循环次数的限制，如果最后剩下的所有员工都不喜欢礼物堆最上面的礼物，那么剩下的员工都无法得到礼物。返回最后拿不到礼物的员工数量。
 * 数组persons存放每位员工的喜好，person[i]代表第i位员工的喜好；数组prizes存放礼物，prizes[0]代表最上面的礼物。persons[i]和prizes[i]是0或者1
 * 请实现该方法，返回拿不到礼物的员工数量
 * public int getNumWithoutPrize(int[] persons,int[] prizes) {
 * }
 *
 */
public class Solution {

    public int getNumWithoutPrize(int[] persons, int[] prizes) {
        LinkedList<Integer> personList = new LinkedList<>();
        for (int person : persons) {
            personList.add(person);
        }

        int circle = 0;
        for (int i = 0; i < prizes.length; ) {
            Integer like = personList.get(0);

            if (like.equals(prizes[i])) {
                personList.removeFirst();

                ++i;
                circle = 0;
            } else {
                Integer first = personList.removeFirst();
                personList.addLast(first);

                ++circle;
                if (circle > personList.size()) {
                    break;
                }
                continue;
            }
        }
        return personList.size();
    }

    /**
     * 示例1：
     * persons：[0,0,1,1,1]；prizes:[1,1,1,1,1],返回2
     * 示例2：
     * persons：[1,0,1,0,1]；prizes:[0,1,0,1,1],返回0
     * 示例3：
     * persons：[1,0,1,0,1]；prizes:[1,1,0,1,1],返回1
     * @param args
     */
    public static void main(String[] args) {
//        int[] persons = new int[]{0,0,1,1,1}; // 2
//        int[] prizes = new int[]{1,1,1,1,1};

//        int[] persons = new int[]{1,0,1,0,1}; // 0
//        int[] prizes = new int[]{0,1,0,1,1};

//        int[] persons = new int[]{1,0,1,0,1}; // 1
//        int[] prizes = new int[]{1,1,0,1,1};

//        int[] persons = new int[]{1,0,0,0,0}; // 4
//        int[] prizes = new int[]{1,1,1,1,1};

        int[] persons = new int[]{0,0,0,0,1}; // 4
        int[] prizes = new int[]{1,1,1,1,1};

        System.out.println(new Solution().getNumWithoutPrize(persons, prizes));
    }

}
